# Replication package for 
# "The Economic Leverage of International Organizations in Interstate Disputes"
# Johannes Karreth
# June 30, 2017
# jkarreth@ursinus.edu

# This file: 20_crises_createdata.R
# Purpose: Compile data for analyses of crises

rm(list = ls())
# setwd("...")

library("rio")
library("countrycode")
library("dplyr")

# Merge ICB crisis data (icb1v10)

d <- import("Sources/icbdy_v11.csv")
d$crisname_dyad <- d$crisname; d$crisname <- NULL

icbv11 <- import("Sources/icb1v11.csv")

d2 <- merge(x = d, y = icbv11, by = c("crisno"), all.x = FALSE, all.y = FALSE)

d2$ccode1 <- d2$statea
d2$ccode2 <- d2$stateb
d2$dyadid <- ifelse(d2$ccode1 < d2$ccode2, d2$ccode1 * 1000 + d2$ccode2, d2$ccode2 * 1000 + d2$ccode1)

igo <- import("Sources/igo.dyad.diss.dta")

igo_drop <- c("ccode1", "ccode2", "io370", 
"io6010", "io690", "io350", "io630", "io230", "io700", "io710", 
"io380", "io680", "io400", "io270", "io320", "io60", "io390", 
"io220", "io10", "io720", "io50", "io20", "io570", "io6020", 
"io420", "io80", "io100", "io160", "io90", "io6030", "io410", 
"io110", "io430", "io450", "io590", "io440", "io730", "io115", 
"io6040", "io460", "io120", "io6050", "io490", "io240", "io250", 
"io40", "io470", "io360", "io500", "io140", "io510", "io640", 
"io340", "io550", "io650", "io2060", "io660", "io600", "io150", 
"io670", "io155", "io610", "io4070", "io170", "io520", "io190", 
"io760", "io200", "io740", "io750", "io290", "io540", "io560", 
"io210", "io770", "io6060", "io620", "io70", "io130", "io180", 
"io310", "io330", "io2770", "io530", "io580", "io800", "io780", 
"io870", "io790", "io6070", "io840", "io830", "io820", "io850", 
"io2470", "io810", "io860", "io6080", "io300", "io3810", "io1280", 
"io1180", "io1360", "io871", "io950", "io1350", "io970", "io980", 
"io30", "io1310", "io1000", "io880", "io912", "io1010", "io1200", 
"io6090", "io1040", "io1420", "io1050", "io1060", "io1120", "io872", 
"io890", "io4485", "io1210", "io1020", "io1070", "io1080", "io1220", 
"io1260", "io1100", "io1510", "io1720", "io910", "io1160", "io1320", 
"io6110", "io1140", "io1290", "io1230", "io1400", "io1330", "io1370", 
"io1410", "io1390", "io1380", "io1170", "io1300", "io1340", "io1130", 
"io913", "io6120", "io1095", "io1270", "io920", "io6130", "io1145", 
"io1250", "io2040", "io900", "io6100", "io1190", "io1240", "io1460", 
"io1450", "io1440", "io1470", "io4120", "io1475", "io1480", "io1550", 
"io1540", "io1570", "io1580", "io1489", "io1500", "io1490", "io1610", 
"io1486", "io1620", "io1530", "io1520", "io1640", "io1585", "io1653", 
"io1645", "io1660", "io1670", "io1690", "io1680", "io1810", "io1535", 
"io1700", "io1710", "io1715", "io1560", "io1770", "io1760", "io1740", 
"io1750", "io1790", "io1780", "io1800", "io1820", "io1830", "io1600", 
"io1565", "io1730", "io1630", "io1590", "io1430", "io1840", "io6140", 
"io1860", "io1850", "io1910", "io2285", "io1950", "io1880", "io1970", 
"io1990", "io1980", "io1900", "io6150", "io6160", "io1920", "io2000", 
"io1870", "io2010", "io2020", "io2345", "io2120", "io2110", "io2080", 
"io2140", "io2130", "io2160", "io2150", "io2370", "io2170", "io2175", 
"io2190", "io2200", "io2220", "io2180", "io2325", "io2330", "io2090", 
"io2100", "io2105", "io2203", "io2380", "io2350", "io2360", "io2206", 
"io2340", "io2210", "io2410", "io2455", "io2460", "io2390", "io2240", 
"io2430", "io2440", "io2400", "io2680", "io2600", "io2500", "io2490", 
"io2270", "io2280", "io2320", "io2520", "io2480", "io2620", "io2610", 
"io2540", "io2690", "io6170", "io2550", "io2640", "io2560", "io2570", 
"io2450", "io2650", "io2670", "io2260", "io2580", "io2590", "io2660", 
"io2630", "io6180", "io2530", "io2495", "io2510", "io2575", "io2030", 
"io2710", "io2705", "io2720", "io2730", "io2760", "io2750", "io2740", 
"io2230", "io3260", "io6185", "io2780", "io2800", "io2805", "io2033", 
"io2810", "io6190", "io2820", "io2830", "io2840", "io2850", "io2890", 
"io2880", "io2036", "io2860", "io2870", "io2070", "io2300", "io1110", 
"io2900", "io2910", "io3170", "io2700", "io3300", "io2050", "io2930", 
"io2970", "io2250", "io2960", "io2950", "io2940", "io2290", "io3000", 
"io3020", "io2972", "io2980", "io2990", "io3010", "io3030", "io3080", 
"io3040", "io3050", "io3090", "io3070", "io3100", "io3290", "io3320", 
"io3310", "io6200", "io3110", "io3130", "io3180", "io3175", "io3150", 
"io3140", "io6210", "io3190", "io3160", "io2310", "io6220", "io3220", 
"io3200", "io3210", "io4360", "io3230", "io3240", "io3270", "io3250", 
"io3280", "io3340", "io3350", "io3360", "io3380", "io3370", "io3410", 
"io3420", "io3428", "io3430", "io3400", "io3440", "io1150", "io3470", 
"io3450", "io3460", "io6230", "io3520", "io3510", "io3500", "io3550", 
"io3540", "io6240", "io3480", "io3490", "io4260", "io3530", "io3560", 
"io6250", "io3670", "io3580", "io3680", "io3690", "io3700", "io3620", 
"io3600", "io3610", "io3630", "io3730", "io3640", "io3650", "io2920", 
"io3710", "io3570", "io3660", "io6260", "io3590", "io3800", "io3900", 
"io3760", "io260", "io3812", "io3820", "io3780", "io3750", "io3830", 
"io3762", "io3740", "io3850", "io6270", "io3790", "io280", "io3840", 
"io3770", "io3855", "io3860", "io1090", "io3925", "io3890", "io3880", 
"io6280", "io3910", "io3940", "io3870", "io3930", "io4000", "io3950", 
"io3960", "io3970", "io3720", "io3965", "io4200", "io3920", "io4010", 
"io6290", "io3980", "io4030", "io4020", "io4050", "io4080", "io4060", 
"io6300", "io4090", "io3060", "io4100", "io4040", "io4085", "io4270", 
"io4170", "io4160", "io4240", "io4250", "io4251", "io4140", "io4230", 
"io4280", "io4110", "io4300", "io1930", "io4220", "io4210", "io6310", 
"io3390", "io990", "io1890", "io4180", "io4190", "io4130", "io4150", 
"io6320", "io4290", "io4330", "io4320", "io4310", "io3330", "io4380", 
"io4370", "io940", "io4340", "io4350", "io4390", "io4365", "io4503", 
"io4400", "io2790", "io4410", "io4420", "io4430", "io4440", "io1940", 
"io4450", "io4490", "io4500", "io6340", "io4480", "io4540", "io1650", 
"io4510", "io4550", "io4560", "io4530", "io4520", "io4460", "io4580", 
"io4570", "io4470")
igo_sm <- igo[, !(names(igo) %in% igo_drop)]

d3 <- merge(x = d2, y = igo_sm, by = c("dyadid", "year"), all.x = FALSE, all.y = FALSE)

d3$region1 <- countrycode(sourcevar = d3$ccode1, origin = "cown", destination = "region")
d3$continent1 <- countrycode(sourcevar = d3$ccode1, origin = "cown", destination = "continent")

d3[d3$ccode1 == 260, ]$region1 <- "Western Europe"
d3[d3$ccode1 == 265, ]$region1 <- "Western Europe"
d3[d3$ccode1 == 315, ]$region1 <- "Eastern Europe"
d3[d3$ccode1 == 345, ]$region1 <- "Southern Europe"
d3[d3$ccode1 == 678, ]$region1 <- "Western Asia"
d3[d3$ccode1 == 680, ]$region1 <- "Western Asia"
d3[d3$ccode1 == 713, ]$region1 <- "Eastern Asia"

d3[d3$ccode1 == 260, ]$continent1 <- "Europe"
d3[d3$ccode1 == 265, ]$continent1 <- "Europe"
d3[d3$ccode1 == 315, ]$continent1 <- "Europe"
d3[d3$ccode1 == 345, ]$continent1 <- "Europe"
d3[d3$ccode1 == 678, ]$continent1 <- "Asia"
d3[d3$ccode1 == 680, ]$continent1 <- "Asia"
d3[d3$ccode1 == 713, ]$continent1 <- "Asia"

d3$region2 <- countrycode(source = d3$ccode2, origin = "cown", destination = "region")
d3$continent2 <- countrycode(source = d3$ccode2, origin = "cown", destination = "continent")

d3[d3$ccode2 == 265, ]$region2 <- "Western Europe"
d3[d3$ccode2 == 315, ]$region2 <- "Eastern Europe"
d3[d3$ccode2 == 345, ]$region2 <- "Southern Europe"
d3[d3$ccode2 == 678, ]$region2 <- "Western Asia"
d3[d3$ccode2 == 680, ]$region2 <- "Western Asia"
d3[d3$ccode2 == 713, ]$region2 <- "Eastern Asia"
d3[d3$ccode2 == 817, ]$region2 <- "South-Eastern Asia"

d3[d3$ccode2 == 265, ]$continent2 <- "Europe"
d3[d3$ccode2 == 315, ]$continent2 <- "Europe"
d3[d3$ccode2 == 345, ]$continent2 <- "Europe"
d3[d3$ccode2 == 678, ]$continent2 <- "Asia"
d3[d3$ccode2 == 680, ]$continent2 <- "Asia"
d3[d3$ccode2 == 713, ]$continent2 <- "Asia"
d3[d3$ccode2 == 817, ]$continent2 <- "Asia"

# Add democracy

d4 <- arrange(d3, ccode1, year)

polc1 <- import("Sources/polityiv.c1.dta")

d5 <- merge(x = d4, y = polc1, by = c("ccode1", "year"), all.x = TRUE, all.y = FALSE)

polc2 <- import("Sources/polityiv.c2.dta")

d6 <- merge(x = d5, y = polc2, by = c("ccode2", "year"), all.x = TRUE, all.y = FALSE)

d6 <- arrange(d6, dyadid, year)

d6$jointpol6 <- ifelse(d6$c1polity2 > 6 & d6$c2polity2 > 6, 1, 0)
d6$jointpol7 <- ifelse(d6$c1polity2 > 7 & d6$c2polity2 > 7, 1, 0)

# Add CINC scores

cinc1 <- import("Sources/NMC_v4_0.c1.dta")
cinc1 <- cinc1[, c("ccode1", "year", "cinc1")]

d7 <- merge(x = d6, y = cinc1, by = c("ccode1", "year"), all.x = TRUE, all.y = FALSE)

cinc2 <- import("Sources/NMC_v4_0.c2.dta")
cinc2 <- cinc2[, c("ccode2", "year", "cinc2")]

d8 <- merge(x = d7, y = cinc2, by = c("ccode2", "year"), all.x = TRUE, all.y = FALSE)

# Add ATOP data

atop <- import("Sources/atop3_0ddyr.dta")
atop <- atop[, c("dyadid", "year", "atopally", "defense", "offense", "neutral", "nonagg", "consul", "shareob", "asymm")]

d9 <- merge(x = d8, y = atop, by = c("dyadid", "year"), all.x = TRUE, all.y = FALSE)

d9$atopally <- ifelse(is.na(d9$atopally) == TRUE, 0, d9$atopally)

# Add KGD rivalry data

kgd <- import("Sources/KGD_rivalry_yearly.dta")
kgd <- kgd[, c("dyadid", "year", "rivalrynew", "enduringr")]

d10 <- merge(x = d9, y = kgd, by = c("dyadid", "year"), all.x = TRUE, all.y = FALSE)

d10$rivalrynew <- ifelse(is.na(d10$rivalrynew) == TRUE, 0, d10$rivalrynew)
d10$enduringr <- ifelse(is.na(d10$enduringr) == TRUE, 0, d10$enduringr)

# Add Thompson rivalry data

tho <- import("Sources/thompson.rivalry.yearly.dta")
tho <- tho[, c("dyadid", "year", "rivalry_pos", "rivalry_spat", "rivalry_ide", "rivalry_int", "rivalry_th")]

d11 <- merge(x = d10, y = tho, by = c("dyadid", "year"), all.x = TRUE, all.y = FALSE)

d11$rivalry_th <- ifelse(is.na(d11$rivalry_th) == TRUE, 0, d11$rivalry_th)

# Add trade data

trade <- import("Sources/igotrade.ud1918.dta")
trade <- trade[, c("dyadid", "year", "acra", "acrb", "expab", "eabo", "impab", "iabo", "expba", "ebao", "impba", "ibao", "popa", "rgdpca", "cgdpca", "goa", "popb", "rgdpcb", "cgdpcb", "gob", "tottra", "tottrb")]

d12 <- merge(x = d11, y = trade, by = c("dyadid", "year"), all.x = TRUE, all.y = FALSE)

d12$gdppc_low <- pmin(d12$rgdpca, d12$rgdpcb)
d12$tradedep_c1 <- with(d12, ((impab + expab) * 1000000) / (cgdpca * popa * 1000))
d12$tradedep_c2 <- with(d12, ((impba + expba) * 1000000) / (cgdpcb * popb * 1000))
d12$tradedep_low <- pmin(d12$tradedep_c1, d12$tradedep_c2)
d12$tradedep_low_ln <- log(d12$tradedep_low + 0.000001)

# Add UN affinity

un <- import("Sources/Dyadicdata.tab", format = "tsv")
un <- un[, c("ccode1", "ccode2", "year", "absidealdiff", "s2un", "s3un", "absidealimportantdiff")]
un <- un[un$ccode1 < un$ccode2, ]
un$s2un <- as.numeric(un$s2un)

un$dyadid <- ifelse(un$ccode1 < un$ccode2, un$ccode1 * 1000 + un$ccode2, un$ccode2 * 1000 + un$ccode2)

un <- arrange(un, dyadid, year)
un <- un[, c("dyadid", "year", "absidealdiff", "s2un", "s3un", "absidealimportantdiff")]

un <- mutate(group_by(un, dyadid), 
             absidealdiff_l1 = lag(absidealdiff, 1),
             s2un_l1 = lag(s2un, 1),
             s3un_l1 = lag(s3un, 1))
             
d13 <- merge(x = d12, y = un, by = c("dyadid", "year"), all.x = TRUE, all.y = FALSE)

# Add peace-brokering IGOs

pb <- import("Sources/IGOpb_dyadunit.dta")
pb <- pb[, c("dyadid", "year", "igo_pb_use")]

d14 <- merge(x = d13, y = pb, by = c("dyadid", "year"), all.x = TRUE, all.y = FALSE)

# Add MTOPS

mtops <- import("Sources/mtopsd150.dta")
mtops <- mtops[, c("dyadid", "year", "pacsettg", "pacsettr", "pacsett", "tergen", "terviol", "tertot")]

d15 <- merge(x = d14, y = mtops, by = c("dyadid", "year"), all.x = TRUE, all.y = FALSE)

export(d15, file = "crises_full.csv")